<?php

class Doctrine_Model_PagosDao extends Doctrine_Model_BaseDao {

    public function obtenerTodos() {
        return $this->getEntityManager()
                        ->createQuery('select p from Doctrine_Model_Entities_Pago p')
                        ->getResult();
    }

  
 

    public function obtenerPorId($id) {
        return $this->getEntityManager()->find('Doctrine_Model_Entities_Pago', $id);
    }

    public function guardar(Doctrine_Model_Entities_Pago $pago) {
        try {

            $this->getEntityManager()->persist($pago);
            $this->getEntityManager()->flush();
            
            return true;
        } catch (Exception $e) {
            echo ($e->xdebug_message);
            $logger = Zend_Registry::get('logger');
            $logger->log("Error:" . $e->getMessage(), Zend_Log::ERR);
            return false;
        }
    }

    public function eliminar(Doctrine_Model_Entities_Pago $pago) {
        try {
            $this->getEntityManager()->remove($pago);
            $this->getEntityManager()->flush();

            return true;
        } catch (Exception $e) {
            $logger = Zend_Registry::get('logger');

            $logger->log("Error: " . $e->getMessage(), Zend_Log::ERR);
            return false;
        }
    }

    public function obtenerEnrtadasEntreFechas($inicio, $fin) {
 
        if (isset($inicio) && isset($fin)) {
          
            $result = $this->getEntityManager()
                    ->createQuery("select e from Doctrine_Model_Entities_Entrada e where  e.fecha>='".$inicio."' AND e.fecha<='".$fin."' order by e.fecha desc" )
                    ->getResult();
            return $result;
        } else {
            return NULL;
        }
    }
      public function obtenerEntreFechasporSucursal($inicio, $fin,$sucursalId) {
 
        if (isset($inicio) && isset($fin)) {
          
            $result = $this->getEntityManager()
                    ->createQuery("select p from Doctrine_Model_Entities_Pago p JOIN p.usuario u JOIN u.sucursal s where  p.fecha>='".$inicio."' AND p.fecha<='".$fin."' AND s.id=" . $sucursalId . " order by p.fecha desc" )
                    ->getResult();
            return $result;
        } else {
            return NULL;
        }
    }
    
      public function obtenerEntreFechasporSucursalFacturados($inicio, $fin,$sucursalId) {
 
        if (isset($inicio) && isset($fin)) {
          
            $result = $this->getEntityManager()
                    ->createQuery("select p from Doctrine_Model_Entities_Pago p JOIN p.cuota c JOIN c.credito cred JOIN p.usuario u JOIN u.sucursal s where  p.fecha>='".$inicio."' AND p.fecha<='".$fin."' AND s.id=" . $sucursalId . " AND cred.facturado=1 order by p.fecha desc" )
                    ->getResult();
            return $result;
        } else {
            return NULL;
        }
    }
    
    public function obtenerEntreFechasporSucursalImpresosFacturados($inicio, $fin,$sucursalId) {
 
        if (isset($inicio) && isset($fin)) {
          
            $result = $this->getEntityManager()
                    ->createQuery("select p from Doctrine_Model_Entities_Pago p JOIN p.usuario u JOIN u.sucursal s where  p.fecha>='".$inicio."' AND p.fecha<='".$fin."' AND s.id=" . $sucursalId . "  AND p.fechaReimpreso is not null order by p.fecha desc" )
                    ->getResult();
            return $result;
        } else {
            return NULL;
        }
    }
       public function obtenerEntreFechasporSucursalImpresos($inicio, $fin,$sucursalId) {
 
        if (isset($inicio) && isset($fin)) {
          
            $result = $this->getEntityManager()
                    ->createQuery("select p from Doctrine_Model_Entities_Pago p JOIN p.usuario u JOIN u.sucursal s where  p.fecha>='".$inicio."' AND p.fecha<='".$fin."' AND s.id=" . $sucursalId . "  AND p.fechaReimpreso is not null order by p.fecha desc" )
                    ->getResult();
            return $result;
        } else {
            return NULL;
        }
    }
    public function obtenerEntreFechasporSucursalNoImpresosFacturados($inicio, $fin,$sucursalId) {
 
        if (isset($inicio) && isset($fin)) {
          
            $result = $this->getEntityManager()
                    ->createQuery("select p from Doctrine_Model_Entities_Pago p JOIN p.usuario u JOIN u.sucursal s where  p.fecha>='".$inicio."' AND p.fecha<='".$fin."' AND s.id=" . $sucursalId . " AND p.fechaReimpreso is null  order by p.fecha desc" )
                    ->getResult();
            return $result;
        } else {
            return NULL;
        }
    }
    
      public function obtenerEntreFechasporSucursalNoImpresos($inicio, $fin,$sucursalId) {
 
        if (isset($inicio) && isset($fin)) {
          
            $result = $this->getEntityManager()
                    ->createQuery("select p from Doctrine_Model_Entities_Pago p JOIN p.usuario u JOIN u.sucursal s where  p.fecha>='".$inicio."' AND p.fecha<='".$fin."' AND s.id=" . $sucursalId . " AND p.fechaReimpreso is null  order by p.fecha desc" )
                    ->getResult();
            return $result;
        } else {
            return NULL;
        }
    }

      public function obtenerSalidasEntreFechas($inicio, $fin) {
        if (isset($inicio) && isset($fin)) {
            $result = $this->getEntityManager()
                    ->createQuery("select e from Doctrine_Model_Entities_Salida e where  e.fecha>='".$inicio."' AND e.fecha<='".$fin."' order by e.fecha desc" )
                    ->getResult();
            return $result;
        } else {
            return NULL;
        }
    }

}

